package com.qqtech.qquan.sms.service;

import java.sql.Timestamp;

import com.qqtech.core.common.enums.YesNoEnum;
import com.qqtech.core.frame.service.BaseService;
import com.qqtech.qquan.order.enums.OrderBaseDeliveryStatusSignTypeDictEnum;
import com.qqtech.qquan.order.enums.OrderBaseReturnStatusCompleteTypeDictEnum;
import com.qqtech.qquan.order.enums.ReturnPayStatusAgreeTypeEnum;
import com.qqtech.qquan.sms.model.SmsBase;

/**
 * 短信提醒业务接口
 * 
 * @author andy.wangzhh
 *
 */
public interface SmsBizzService extends BaseService<SmsBase> {

	/**
	 * 订单签收
	 * 
	 * @param orderNo
	 *            订单号
	 * @param orderBaseDeliveryStatusSignType
	 *            签收类型
	 */
	void orderSigned(String orderNo, OrderBaseDeliveryStatusSignTypeDictEnum orderBaseDeliveryStatusSignType);

	/**
	 * 订单发货
	 * 
	 * @param orderNo
	 *            订单号
	 */
	void orderSent(String orderNo);

	/**
	 * 订单支付(或货到付款)提醒
	 * 
	 * @param orderNo
	 *            订单号
	 */
	void orderPayedOrOndelivery(String orderNo);

	/**
	 * 买家下单
	 * 
	 * @param orderNo
	 *            订单号
	 */
	void orderSelected(String orderNo);

	/**
	 * 买家取消订单
	 * 
	 * @param orderNo
	 */
	void buyerCancel(String orderNo);

	/**
	 * 卖家取消订单
	 * 
	 * @param orderNo
	 */
	void sellerCancel(String orderNo);

	/**
	 * 卖家同意退款
	 * 
	 * @param orderNo
	 * @param orderBaseReturnStatusCompleteType
	 */
	void returned(String orderNo, OrderBaseReturnStatusCompleteTypeDictEnum orderBaseReturnStatusCompleteType);

	/**
	 * 买家申请退款
	 * 
	 * @param orderNo
	 */
	void applyReturn(String orderNo);

	/**
	 * 身份认证信息审核结果通知
	 * 
	 * @param userId
	 *            认证人的id
	 * @param yesNo
	 *            认证是否通过:1-是;2-否
	 */
	void realAuth(Integer userId, YesNoEnum yesNo);

	/**
	 * 配送员点击配送完成时，则给买家发短信提醒
	 * 
	 * @param orderNo
	 * @param deliveryUserId
	 * @param now
	 */
	void toUserWhenDeliveryed(String orderNo, Integer deliveryUserId, Timestamp now);

	/**
	 * 买家申请退款
	 * 
	 * @param orderNo
	 */
	void applyReturnPay(String orderNo);

	/**
	 * 同意退款
	 * 
	 * @param orderNo
	 * @param returnPayStatusAgreeType
	 */
	void agreeReturnPay(String orderNo, ReturnPayStatusAgreeTypeEnum returnPayStatusAgreeType);

	/**
	 * 卖家拒绝退款
	 * 
	 * @param orderNo
	 */
	void refuseReturnPay(String orderNo);

	/**
	 * 短信发送给配送人
	 * @param orderNo
	 */
	void orderPayedToSender(String orderNo);

	/**
	 * 短信发送给超级配送监控人
	 * @param orderNo
	 */
	void orderPayedToSuperSender(String orderNo);
}